<?php
//	FORMULAIRE D'AFFICHAGE DE LA LISTE DES FICHES

/* PAGINATION */ /* $x doit être définie avant d'arriver à cet endroit du code */

// A partir de combien d'enregistrements une nouvelle page est-elle créée ? A partir de $z
/* Si la session n'est pas définie, la définir ... */
if(!isset($_SESSION['pagination_lib']))
{
		/* Si une valeur est définie depuis le menu déroulant, cette valeur doit être prise en compte */
		if(isset($_GET['pag']) and is_numeric($_GET['pag']))
		{
			$_SESSION['pagination_lib'] = $_GET['pag'];
		}
		/* Sinon, on utilisera la valeur par défaut */
		else
		{
			$_SESSION['pagination_lib'] = config('pagination');
		}
}
/* Si la session est déjà définie ... */
else
{
	/* Si on veut utiliser une nouvelle valeur, prendre en compte cette nouvelle valeur */
	if(isset($_GET['pag']) and is_numeric($_GET['pag']))
	{
		$_SESSION['pagination_lib'] = $_GET['pag'];
	}
}	
/* Récupérer le résultat final dans $z */
$z = $_SESSION['pagination_lib'];

/* Combien de fiches dans la base de données ? réponse : $t*/
$connexion = new Connexion();
$sql = "SELECT * FROM lib_meta";
$req = $connexion->query($sql);
$t = $connexion->count();

// lib_tri des enregistrements
	// Cas 1 => Première visualisation de la page: session close: lib_tri par défaut
	if (!isset($_SESSION['lib_tri']))
		$_SESSION['lib_tri'] = "id DESC";

	// Cas 2 => L'utilisateur vient juste de cliquer sur un lien ordonnant un lib_tri
	if(isset($_GET['tri']))
	{
		// Titre
		if($_GET['tri'] == "n-asc")
			$_SESSION['lib_tri'] = "titre ASC";
		if($_GET['tri'] == "n-desc")
			$_SESSION['lib_tri'] = "titre DESC";

		// Thème
		if($_GET['tri'] == "pn-asc")
			$_SESSION['lib_tri'] = "theme ASC";
		if($_GET['tri'] == "pn-desc")
			$_SESSION['lib_tri'] = "theme DESC";
			
		// Etiquette
		if($_GET['tri'] == "et-asc")
			$_SESSION['lib_tri'] = "label ASC";
		if($_GET['tri'] == "et-desc")
			$_SESSION['lib_tri'] = "label DESC";
			
		// Par date de mise à jour
		if($_GET['tri'] == "maj-asc")
			$_SESSION['lib_tri'] = "date_modification ASC";
		if($_GET['tri'] == "maj-desc")
			$_SESSION['lib_tri'] = "date_modification DESC";
			
		// Par date de création
		if($_GET['tri'] == "cre-asc")
			$_SESSION['lib_tri'] = "date_creation ASC";
		if($_GET['tri'] == "cre-desc")
			$_SESSION['lib_tri'] = "date_creation DESC";
			
		// Annuler la formule de lib_tri
		if($_GET['tri'] == "no")
			$_SESSION['lib_tri'] = "id DESC";
	}
	
	// Conclusion => un tri est déjà actif, soit parce que c'est le tri par défaut (cas 1)
	// soit parce qu'il vient d'être défini (cas 2), soit encore parce qu'il est enregistré
	// dans la session en cours.
	$tri = $_SESSION['lib_tri'];
	
	
	// Afficher un label déterminé ?
	if(!isset($_GET['l']))
		if(!isset($_SESSION['lib_label']))
			$l = $_SESSION['lib_label'] = "ALL";
		else
			$l = $_SESSION['lib_label'];
	else $l = $_SESSION['lib_label'] = $_GET['l'];

	if($l != "ALL")
		 	{ $etiquette = "WHERE ".QList("label",$l); $ET = true; }
	else 	{ $etiquette = " "; $ET = false; }
	
	// Afficher un tag déterminé ?
	if(!isset($_GET['tag']))
		{ $tag = ""; $TG = false; }
	else 
		{ $tag = QList("tags",$_GET['tag']); $TG = true; }
		
	// Y a-t-il ETIQUETTE + TAG ? Si oui, ajouter "AND" dans l'instruction SQL.
	if($ET and $TG)			$and = " AND ";
	elseif($ET and !$TG)	$and = "";
	elseif(!$ET and $TG)	$and = "WHERE ";
	else 					$and = " ";

//Générer la requête avant de modifier les limites ($x)
$sql = "SELECT * FROM lib_meta $etiquette $and $tag ORDER BY $tri LIMIT $x,$z;";
$req = $connexion->query($sql);

// On stocke le $x actuel dans $xa, car $x va être modifié par la suite
$xa = $x;
// Barre de navigation / répartition des résultats sur plusieurs pages
//Calculs
// $y est le premier enregistrement de la plage à afficher (LIMIT Y,...)
// $z est le seuil à partir duquel on passe à une autre page
// $x est le nombre d'enregistrements qu'il reste à afficher
	//Protéger y: il ne doit pas être négatif, car x peut être plus petit que z
	$y = $x - $z;
	if($y < 0)
		$y = 0;
	//Le nouveau x est l'ancien + la grandeur du nouvel intervalle ($z)
	$x = $x + $z;
	// $la représente le premier enregistrement de la dernière page
	$la = $t-$z;
	// $p représente le nombre de pages
	$p = ceil($t / $z); //ceil() arrondit à la valeur supérieure
	// $c représente la page courante
	$c = ceil($x / $z); //ceil() arrondit à la valeur supérieure


/* /PAGINATION */
?>

<div id="list_form">
	
	<table width="100%" align="center" cellpadding="2" cellspacing="0" border="0">
	  <tr class="list-headers">
	    <td class="list-headers" style="padding: 5px 5px;" colspan="9">
		<table class="list-headers" style="width:100%;" cellspacing="0" cellpadding="0"><tr>
		<td width="35%">
		<form name="libform" method="post" action="index.php?a=liblist">
    	<?php 
		/* Construction et affichage du système de pagination */
		$avant =      abbr2("p-");
		$apres =      abbr2("p+");
		$avantx =     donner("p-");
		$apresx =     donner("p+");
		$il_y_a =     donner("p1");
		$fiches_sur = donner("p2c");
		$pages =      donner("p3");
		$page =       donner("p4");

		$result  = "$il_y_a <b>".$t."</b> $fiches_sur <b>".$p."</b> $pages";
		$result .= "&nbsp;-&nbsp;";

		// Combobox qui permet de sauter d'une page à l'autre
		  $co  = "<select name=\"menu_pagination\" "
		       ."onchange=\"MM_jumpMenu('parent',this,0)\">";

		for($ix = 1 ; $ix <= $p ; $ix++)
		{
			// Page courante
			if($ix == $c)
			{
				$co .= "<option selected=\"selected\">$c</option>";
			}
			// Autre page
			else
			{
				/* $ix indique la page à laquelle on veut aller, mais quelle sera la
				 valeur de x pour cette page (x=premier enregistrement de la page) ?
				Réponse: page désirée ($ix) * seuil de pagination ($z) 
				MAIS: la première page porte le numéro 1, alors qu'elle est
				construite avec un $x égal à 0 (limit $x=O,$z) => donc, il faut
				en réalité utiliser ($ix - 1) au lieu de $ix*/
				$xgo = ($ix - 1) * $z;

				$co .= "<option value=\"index.php?d=lib&x=$xgo"
				    ."\">$ix</option>";
			}
		}
		$co .= "</select>";

		// Pour désactiver le Combo, remplacer ci-dessous $co par $c
		$result .= "$page: <b>$co/$p</b> &nbsp;-&nbsp;";

		// si $x>$z c'est qu'on est plus à la première page
		if($x > $z) 
		{
			$result	.="<a href=\"index.php?d=lib\">".abbr2("<<")."</a> | "
					."<a href=\"index.php?d=lib&x=$y\">"
					."".abbr2("<")." $avant</a>";
		}
		// sinon c'est qu'on est à la première page
		else
		{
			$result .= "<< | < $avantx";
		}

		$result	.=" | ";

		//si $x<$t c'est qu'on n'est pas encore à la dernière page
		if($x < $t) 
		{
			$result	.="<a href=\"index.php?d=lib&x=$x\">"
					."$apres ".abbr2(">")."</a> | "
					."<a href=\"index.php?d=lib&x=$la\">"
					.abbr2(">>")."</a>";
		}
		// sinon c'est qu'on est à la dernière page
		else
		{
			$result .= $apresx." > | >>";
		}

		echo $result;
	?>
	
		<span class="tri" style="margin-left: 10px;">
		(<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=no">
			<?php echo abbr3(donner("tri-no"), donner("@tri-no")); ?>
		</a>)
    	</span>
	</td>
	
	
	<td width="25%">
			<label><?php say('search'); ?>
			<input type="text" name="query" size="20"/>
			<input type="submit" value="<?php say('go');?>" />
			</label>
	</td>
	
	<td class="list-headers" width="40%">	
		<?php abbr("affichage");?>
		<select name="menu_pagination" onchange="MM_jumpMenu('parent',this,0)">
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == config("pagination")) 
					echo "selected";?> value="index.php?d=lib&pag=<?php 
					echo config('pagination_lib');?>"><?php echo config('pagination_lib').' (def.)'; ?></option>
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == "10") 
					echo "selected";?> value="index.php?d=lib&pag=10">10</option>
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == "20") 
					echo "selected";?> value="index.php?d=lib&pag=20">20</option>
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == "50") 
					echo "selected";?> value="index.php?d=lib&pag=50">50</option>
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == "100") 
					echo "selected";?> value="index.php?d=lib&pag=100">100</option>
			<option <?php if(isset($_SESSION['pagination_lib']) and $_SESSION['pagination_lib'] == "200") 
					echo "selected";?> value="index.php?d=lib&pag=200">200</option>						
		</select>
		&nbsp;
		<select name="menu_labels" onchange="MM_jumpMenu('parent',this,0)">
			<option value="index.php?d=lib&l=ALL&x=<?php  echo $xa; ?>"><?php say("affichage_all")?></option>
			<?php
			/* Remplissage des labels */
			$sqllab = "SELECT id,nom FROM lib_labels;";
			$connexionlab = new Connexion();
			$reqlab = $connexionlab->query($sqllab);
			while($dlab = $connexionlab->fetch_assoc($reqlab))
			{	
				if($l == $dlab['id']) $slab = "selected";
				else $slab = " ";
				echo "<option $slab value=\"index.php?d=lib&l=".$dlab['id']."&x=$xa\">".$dlab['nom']."</option>";
			}
			?>
		</select>
		&nbsp;|&nbsp;
		<?php abbr("actions");?>
		<select name="op">
			<option value="#"></option>
			<?php
			/* Ajouter des labels */
			$sqllab = "SELECT id,nom FROM lib_labels;";
			$connexionlab = new Connexion();
			$reqlab = $connexionlab->query($sqllab);
			while($dlab = $connexionlab->fetch_assoc($reqlab))
			{	
				echo "<option value=\"addLabel_".$dlab['id']."\">".donner("act-addLabel")." ".stripslashes($dlab['nom'])."</option>";
			}
			?>
			<option value="#"></option>
			<?php
			/* Retirer des labels */
			$sqllab = "SELECT id,nom FROM lib_labels;";
			$connexionlab = new Connexion();
			$reqlab = $connexionlab->query($sqllab);
			while($dlab = $connexionlab->fetch_assoc($reqlab))
			{	
				echo "<option value=\"delLabel_".$dlab['id']."\">".donner("act-delLabel")." ".stripslashes($dlab['nom'])."</option>";
			}
			?>
			<option value="#"></option>
			<!-- Supprimer les fiches -->
			<option value="del"><?php say("lib_del"); ?></option>
		</select>
		
		<input type="submit" value="<?php say("ok"); ?>" />
	</td></tr></table>
	</td>
    </tr>

	<tr class="list-headers">
	    <td class="list-cell-header" width="40%"><?php say("lib_titre"); ?>
		<br />
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=n-asc">
				<?php echo abbr3(donner("tri-asc"), donner("@tri-asc-n")); ?>
			</a>
			</span>
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=n-desc">
				<?php echo abbr3(donner("tri-desc"), donner("@tri-desc-n")); ?>
			</a>
			</span>
		</td>
		
		<td class="list-cell-header" width="2%" align="center">
			<?php say("lib_fichier"); ?>
		</td>
		
		<td class="list-cell-header" width="16%"><?php say("lib_theme"); ?>
		<br />
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=pn-asc">
				<?php echo abbr3(donner("tri-asc"), donner("@tri-asc-n")); ?>
			</a>
			</span>
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=pn-desc">
				<?php echo abbr3(donner("tri-desc"), donner("@tri-desc-n")); ?>
			</a>
			</span>
		</td>
		
		<td class="list-cell-header" width="16%"><?php say("lib_labels"); ?>
		<br />
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=et-asc">
				<?php echo abbr3(donner("tri-asc"), donner("@tri-asc-n")); ?>
			</a>
			</span>
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=et-desc">
				<?php echo abbr3(donner("tri-desc"), donner("@tri-desc-n")); ?>
			</a>
			</span>
		</td>
		
		<td class="list-cell-header" width="12%"><?php say("lib_dm"); ?>
		<br />
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=maj-asc">
				<?php echo abbr3(donner("tri-asc"), donner("@tri-asc-n")); ?>
			</a>
			</span>
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=maj-desc">
				<?php echo abbr3(donner("tri-desc"), donner("@tri-desc-n")); ?>
			</a>
			</span>
		</td>
		
		<td class="list-cell-header" width="12%"><?php say("lib_dc"); ?>
		<br />
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=cre-asc">
				<?php echo abbr3(donner("tri-asc"), donner("@tri-asc-n")); ?>
			</a>
			</span>
			<span class="tri">
			<a href="index.php?d=lib&x=<?php echo $xa; ?>&tri=cre-desc">
				<?php echo abbr3(donner("tri-desc"), donner("@tri-desc-n")); ?>
			</a>
			</span>
		</td>
		
		<td class="list-cell-header-big" width="2%" align="center">
			<span class="tri">
				<input type="checkbox" name="checkall" id="checkall" onChange="checkAllBoxes(this);" />
				<br />|
			</span>
		</td>
	  </tr>
	
	<?php
	while($data = $connexion->fetch_assoc($req))
	{
		/* Affichage du nom des labels à la place de leur id, et affichage de la couleur */
		$labels = "";
		$couleur = "";
		$lab = explode(",", $data['label']);
		if($lab) /* Explode() renvoie FALSE en cas d'échec */ 
			foreach($lab as $key=>$val)
			{
				$val = trim(rtrim($val));

				if(isset($val) and $val != "")
				{
					$lib = new Library();
					$nom = $lib->getLabelName($val);
					$couleur = $lib->getLabelColor($val);
					$labels .= "<span style=\"color:$couleur;\">$nom</span> ";
				}
			}
		/* Supprimer l'espace à la fin de la chaîne */
		$labels = rtrim($labels);
		
		// Récupère le début du texte de chaque fiche
		$lib = new Library();
		$TEXT = $lib->getExtract($data['textid']);
		$lettres = config('lib_lettres');
		
		// Formate les dates de création et de modification
		$dmodif = convertir_datetime($data['date_modification']);
		$dcreat = convertir_datetime($data['date_creation']);
		
		// Y a-t-il des fichiers attachés ?
		$sqlf = "SELECT id FROM lib_files WHERE metaID='".$data['id']."'";
		$conn = new Connexion();
		$CF = $conn->count( $conn->query($sqlf) );
		
		/* Lien vers la fiche */
		if(isset($xa) and is_numeric($xa))
			$clien = "javascript:js_direct('index.php?d=lib&p=card&id=".$data['id']."&x=$xa');";
		else
			$clien = "javascript:js_direct('index.php?d=lib&p=card&id=".$data['id']."');";
	?>
	<tr style="cursor:pointer" 
		onMouseOver="javascript:change_couleur(this, couleur_hover);"
		onMouseOut="javascript:restaure_couleur(this, couleur_origine);">
		
				<td class="list-cell" onClick="<?php echo $clien; ?>"><?php echo $data['titre'];?>
					<?php if($lettres != 0){ ?><br /><span class="lib_list_extract"><?php echo $TEXT; ?></span><?php }?>
				</td>
				
				<td class="list-cell-small" align="center">
					<?php if($CF != 0) { ?>
							<a href="extdata/fichier.php?id=<?php echo $data['id']; ?>&multi=1">
							<img alt="Fichier" src="themes/<?php echo config('theme'); ?>/fichier.png" />
							</a>
					<?php } ?>
				</td>
				
				<td class="list-cell-small" onClick="<?php echo $clien; ?>"><?php echo $data['theme'];?>
				</td>
				
				<td class="list-cell-small" onClick="<?php echo $clien; ?>"><?php echo $labels; ?>
				</td>
				
				<td class="list-cell-small" onClick="<?php echo $clien; ?>"><?php echo $dmodif;?>
				</td>
				
				<td class="list-cell-small" onClick="<?php echo $clien; ?>"><?php echo $dcreat;?>
				</td>
				
				<td class="list-cell-small" align="center">
					<input type="checkbox" name="check[]" id="cb_<?php echo $data['id'];?>_" value="<?php 
						echo $data['id'];?>" />
				</td>
	</tr>
	<?php
	}
	?>
	</form>
	</table>
</div>